package com.coolw.test.sftp.pool;

import lombok.Data;

/**
 * sftp属性配置类
 *
 * @author coolw
 * @date 2025/8/12 11:20
 */
@Data
public class SftpProperties {

    // ==================== sftp连接配置 start ====================

    /**
     * 主机
     */
    private String host;
    /**
     * 端口
     */
    private Integer port;
    /**
     * 用户名
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 私钥
     */
    private String privateKey;
    /**
     * 私钥密码
     */
    private String passphrase;

    // ==================== sftp连接配置 end ====================

    // ==================== GenericObjectPool连接池默认配置 start ====================

    /**
     * 池中最大对象总数（活跃+空闲）
     */
    private int maxTotal = 10;
    /**
     * 最大空闲对象数，超出的对象会被销毁
     */
    private int maxIdle = 5;
    /**
     * 最小空闲对象数，池会主动创建对象维持此数量
     */
    private int minIdle = 2;
    /**
     * 获取对象的最大等待时间（毫秒），超时抛出异常；默认10秒
     */
    private long maxWaitMillis = 10000;
    /**
     * 空闲对象最小存活时间（毫秒），超时可能被回收；默认5分钟
     */
    private long minEvictableIdleTimeMillis = 300000;
    /**
     * 空闲对象回收线程运行的间隔时间（毫秒）；默认3分钟
     */
    private long timeBetweenEvictionRunsMillis = 180000;
    /**
     * 借用对象时验证对象有效性，开启会降低性能（如果对并发要求高，生产不建议打开）
     */
    private boolean testOnBorrow = false;
    /**
     * 归还对象时验证对象有效性，开启会降低性能（如果对并发要求高，生产不建议打开）
     */
    private boolean testOnReturn = false;
    /**
     * 空闲对象检测时验证对象有效性，开启会检查空闲对象是否超过minEvictableIdleTimeMillis或者无效，定期回收对象
     */
    private boolean testWhileIdle = true;

    // ==================== GenericObjectPool连接池默认配置 end ====================
}
